package 算法.NiuKe.JZ;

import java.util.ArrayList;
import java.util.List;

/**
 * @author:谢君臣
 * @Date:2021/4/1019:46
 * @version:1.0
 * @function:
 *  输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
 *  例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323。
 */
public class JZ32 {
    public static void main(String[] args) {
        System.out.println(PrintMinNumber(new int[]{13,12,14,7,32, 321}));
    }
    public static String PrintMinNumber(int [] nums) {
        StringBuilder string =  new StringBuilder("");
        if (nums.length<1) {
            return "";
        }
        List<Integer> list =  new ArrayList<>();
        list.add(nums[0]);
        for (int i = 1; i < nums.length; i++) {
            list.add(getIndex(list,0,nums[i]),nums[i]);
        }
        for (Integer integer : list) {
            string.append(String.valueOf(integer));
        }
        return string.toString();
    }
    public static int getIndex(List<Integer> list,int i,int target){
        if (i==list.size())
            return i;
        int temp = list.get(i);
        if (temp*Math.pow(10,String.valueOf(target).length())+target < target*Math.pow(10,String.valueOf(temp).length())+temp)
            return getIndex(list, i+1, target);
        else
            return i;
    }
}
